package com.mm.learn.io;

import java.io.*;

/**
 * @author wdx
 * @date 2021年04月08日 13:56
 * <p>
 * 1.说明流的三种分类方式
 * 流向：输入流、输出流
 * 数据单位：字节流、字符流
 * 流的角色：节点流、处理流
 * <p>
 * 2.写出4个O流中的抽象基类，4个文件流，4个缓冲流
 * Inputstream       Filexxxx  Bufferedxxxx
 * Outputstream
 * Reader
 * Writer
 * <p>
 * 4.使用缓冲沆实现a.jpg文件复制为b.jpg文件的操作
 * Bufferedinputstream bis =new Bufferedinputstream(new Fileinputstream(new File("a.jpg)));
 * Bufferedoutputstream bos = new Bufferedoutputstream(new Fileoutputstream(new File(b.jpg)));
 * byte[] buffer = new byte[1024);
 * int len;
 * while((len =bis.read(buffer))!=-1){
 * bos.write(buffer,0,len);
 * }
 * bos.close();
 * bis.close();
 * <p>
 * try-catch-finally
 */
public class IoTest {

    /**
     * 从鍵盘输入字符串，要求将读取到的整行字符串转成大写输出。然后继续进行输入操作，直至当入e"或者exit时，退出程序。
     * 方法一：使用 Scanner实现，调用next（）返回一个字符串
     * 方法二：使用 System.in实现。 System.in-->转换流--> BufferedReader的readline()
     */
    public static void test() {

        BufferedReader br = null;
        try {
            InputStreamReader isr = new InputStreamReader(System.in);
            br = new BufferedReader(isr);
            while (true) {
                System.out.println("请输入字符串：");
                String s = br.readLine();
                if ("e".equalsIgnoreCase(s) || "exit".equalsIgnoreCase(s)) {
                    System.out.println("程序结束");
                    break;
                }
                System.out.println(s.toUpperCase());
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    public static void test2() {

        File src = new File("hello.txt");
        File dest = new File("hello111.txt");
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader(src);
            fw = new FileWriter(dest);
            char[] arr = new char[5];
            int len;
            while ((len = fr.read(arr)) != -1) {
                fw.write(arr, 0, len);
            }
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            try {
                if (fw != null) {
                    fw.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (fr != null) {
                    fr.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

    public static void test3() {

    }

    public static void main(String[] args) {

        test();


    }
}
